package com.station.Activitys.adapter;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.station.Activitys.R;
import com.station.Activitys.activity.ViewPictureActivity;
import com.station.Activitys.adapter.base.BaseRecyclerViewAdapter;
import com.station.Activitys.bean.ImageJson;
import com.station.Activitys.utils.Constant;
import com.station.Activitys.utils.JumperUtils;
import com.zhy.autolayout.utils.AutoUtils;

import java.util.ArrayList;
import java.util.List;

import butterknife.Bind;
import butterknife.ButterKnife;

/**
 * 项目名称：基站管理平台 手机app
 * 类描述：公用 图片反填数据 管理者 适配器
 * 创建人：张飞祥
 * 创建时间：2018/9/27 8:26
 * 修改人：张飞祥
 * 修改时间：2018/9/27 8:26
 * 修改备注：
 */
public class ImageDisplayMagAdapter extends BaseRecyclerViewAdapter {

    //全局上下文
    private Context mContext;
    //图片路径
    private List<ImageJson> mJsonList;
    //是否允许删除 (false：不可删除 true：可以删除)
    private boolean mImgFlag = false;

    /**
     * 数据 构造方法
     *
     * @param mContext
     * @param mJsonList
     */
    public ImageDisplayMagAdapter(Context mContext, List<ImageJson> mJsonList,boolean mImgFlag) {
        super(mContext, mJsonList);
        this.mContext = mContext;
        this.mJsonList = mJsonList;
        this.mImgFlag = mImgFlag;
    }


    @Override
    protected int getLayoutItemResId() {
        return R.layout.item_image_display_mag;
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, final int position) {
        //  viewHolder
        final ImageDisplayMagViewHolder holder = (ImageDisplayMagViewHolder) viewHolder;
        //  View 非空判断
        if (holder.itemView != null) {
            // 将数据保存在itemView的Tag中，以便点击时进行获取
            holder.itemView.setTag(holder.getAdapterPosition());
            //获取当前 实体对象
            final ImageJson json = mJsonList.get(position);
            /**
             * 设置数据源
             */
            //设置标题
            holder.tvItemName.setText(json.getImgCategorys());

            //TODO  删除按钮
            //是否显示
            if (mImgFlag)
                holder.ivItemDel.setVisibility(View.VISIBLE);
            //点击事件
            holder.ivItemDel.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    removeItem(position);
                }
            });

            //填充 adapter
            ImageDisplayAdapter mAdapter = new ImageDisplayAdapter(mContext, json.getImgs(),mImgFlag) {
                @Override
                public void delImage(int pos) {
                    //删除数据
                    mJsonList.get(position).getImgs().remove(pos);
                    notifyDataSetChanged();
                }
            };
            //这里是设置为网格布局，后边4的参数是列数
            holder.rvItemImgList.setLayoutManager(new GridLayoutManager(mContext,3));
            //设置 适配器 到控件上
            holder.rvItemImgList.setAdapter(mAdapter);
            //设置 adapter 点击事件
            mAdapter.setOnItemClickListener(new OnRecyclerViewItemClickListener() {
                @Override
                public void onItemClick(View view, int pos) {
                    //查看图片缩略图
                    viewPluImg(pos,json.getImgs());
                }
            });

        }
    }

    @Override
    public RecyclerView.ViewHolder getViewHolder(View view) {
        return new ImageDisplayMagViewHolder(view);
    }

    /**
     * 删除某一个
     * @param position
     */
    public void removeItem(int position) {
        mJsonList.remove(position);
        //删除动画
        notifyItemRemoved(position);
        notifyDataSetChanged();
    }

    /**
     * 给外部提供一个 获取 数据集合方法
     */
    public List<ImageJson> getHttpImgList() {
        return mJsonList;
    }

    /**
     * 查看图片缩略图
     *
     * @param position
     */
    private void viewPluImg(int position, List<String> mPicList) {

        List<String> list = new ArrayList<>();

        for (String str : mPicList){
            list.add(Constant.HTTP_URL+str);
        }

        Bundle bundle = new Bundle();
        //TODO 传递 当前图片 数据
        //设置 是否可以删除 tag
        bundle.putBoolean(Constant.INTENT_IMAGE_DELETE_TAG, false);
        //设置 图片标志位
        bundle.putInt(Constant.INTENT_IMAGE_POS, position);
        //设置 图片加载方式 （网络图片）
        bundle.putString(Constant.INTENT_IMAGE_LOAD_TAG, Constant.IMAGE_LOAD_HTTP);
        //设置 图片路径
        bundle.putStringArrayList(Constant.INTENT_IMAGE_URL_LIST, (ArrayList<String>) list);
        //跳转 查看图片页面
        JumperUtils.JumpTo((Activity) mContext, ViewPictureActivity.class, bundle);
    }

    /**
     * ViewHolder
     */
    public class ImageDisplayMagViewHolder extends RecyclerView.ViewHolder {

        //分组名称
        @Bind(R.id.tv_item_name)
        TextView tvItemName;
        //删除按钮
        @Bind(R.id.iv_item_del)
        ImageView ivItemDel;
        //图片上传列表
        @Bind(R.id.rv_item_img_list)
        RecyclerView rvItemImgList;

        public ImageDisplayMagViewHolder(View itemView) {
            super(itemView);
            //初始化 控件绑定
            ButterKnife.bind(this, itemView);
            //初始化 屏幕适配
            AutoUtils.autoSize(itemView);
        }
    }
}
